#Boa:Dialog:ComprasSaldosAjustes

import wx
import utiles
import consultasBD
from decimal import Decimal

def create(parent):
    return ComprasSaldosAjustes(parent)

[wxID_COMPRASSALDOSAJUSTES, wxID_COMPRASSALDOSAJUSTESBUTTON1, 
 wxID_COMPRASSALDOSAJUSTESBUTTON2, wxID_COMPRASSALDOSAJUSTESCHECKBOX1, 
 wxID_COMPRASSALDOSAJUSTESCHECKBOX2, wxID_COMPRASSALDOSAJUSTESCHECKBOX3, 
 wxID_COMPRASSALDOSAJUSTESCHECKBOX4, wxID_COMPRASSALDOSAJUSTESCHECKBOX5, 
 wxID_COMPRASSALDOSAJUSTESSTATICTEXT1, wxID_COMPRASSALDOSAJUSTESSTATICTEXT2, 
 wxID_COMPRASSALDOSAJUSTESSTATICTEXT3, wxID_COMPRASSALDOSAJUSTESSTATICTEXT4, 
 wxID_COMPRASSALDOSAJUSTESSTATICTEXT5, wxID_COMPRASSALDOSAJUSTESTEXTCTRL1, 
 wxID_COMPRASSALDOSAJUSTESTEXTCTRL2, wxID_COMPRASSALDOSAJUSTESTEXTCTRL3, 
 wxID_COMPRASSALDOSAJUSTESTEXTCTRL4, wxID_COMPRASSALDOSAJUSTESTEXTCTRL5, 
] = [wx.NewId() for _init_ctrls in range(18)]

class ComprasSaldosAjustes(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_COMPRASSALDOSAJUSTES,
              name='ComprasSaldosAjustes', parent=prnt, pos=wx.Point(22, 25),
              size=wx.Size(457, 217), style=wx.DEFAULT_DIALOG_STYLE,
              title='Compras Saldos: AJUSTES')
        self.SetClientSize(wx.Size(449, 190))

        self.staticText1 = wx.StaticText(id=wxID_COMPRASSALDOSAJUSTESSTATICTEXT1,
              label='Temporada', name='staticText1', parent=self,
              pos=wx.Point(8, 8), size=wx.Size(54, 13), style=0)

        self.textCtrl1 = wx.TextCtrl(id=wxID_COMPRASSALDOSAJUSTESTEXTCTRL1,
              name='textCtrl1', parent=self, pos=wx.Point(8, 24),
              size=wx.Size(88, 21), style=0, value='')
        self.textCtrl1.SetEditable(False)

        self.staticText2 = wx.StaticText(id=wxID_COMPRASSALDOSAJUSTESSTATICTEXT2,
              label='id proveedor', name='staticText2', parent=self,
              pos=wx.Point(104, 8), size=wx.Size(61, 13), style=0)

        self.textCtrl2 = wx.TextCtrl(id=wxID_COMPRASSALDOSAJUSTESTEXTCTRL2,
              name='textCtrl2', parent=self, pos=wx.Point(104, 24),
              size=wx.Size(80, 21), style=0, value='')
        self.textCtrl2.SetEditable(False)

        self.staticText3 = wx.StaticText(id=wxID_COMPRASSALDOSAJUSTESSTATICTEXT3,
              label='Nombre', name='staticText3', parent=self, pos=wx.Point(184,
              8), size=wx.Size(37, 13), style=0)

        self.textCtrl3 = wx.TextCtrl(id=wxID_COMPRASSALDOSAJUSTESTEXTCTRL3,
              name='textCtrl3', parent=self, pos=wx.Point(184, 24),
              size=wx.Size(256, 21), style=0, value='')
        self.textCtrl3.SetEditable(False)

        self.checkBox1 = wx.CheckBox(id=wxID_COMPRASSALDOSAJUSTESCHECKBOX1,
              label='Actualiza Servidor (1)', name='checkBox1', parent=self,
              pos=wx.Point(104, 64), size=wx.Size(136, 13), style=0)
        self.checkBox1.SetValue(False)
        self.checkBox1.Bind(wx.EVT_CHECKBOX, self.OnCheckEn1,
              id=wxID_COMPRASSALDOSAJUSTESCHECKBOX1)

        self.checkBox2 = wx.CheckBox(id=wxID_COMPRASSALDOSAJUSTESCHECKBOX2,
              label='NO actualiza Servidor (2)', name='checkBox2', parent=self,
              pos=wx.Point(104, 80), size=wx.Size(144, 13), style=0)
        self.checkBox2.SetValue(False)
        self.checkBox2.Bind(wx.EVT_CHECKBOX, self.OnCheckEn2,
              id=wxID_COMPRASSALDOSAJUSTESCHECKBOX2)

        self.checkBox3 = wx.CheckBox(id=wxID_COMPRASSALDOSAJUSTESCHECKBOX3,
              label='Debito', name='checkBox3', parent=self, pos=wx.Point(8,
              64), size=wx.Size(64, 13), style=0)
        self.checkBox3.SetValue(False)
        self.checkBox3.Bind(wx.EVT_CHECKBOX, self.OnCheckDebito,
              id=wxID_COMPRASSALDOSAJUSTESCHECKBOX3)

        self.checkBox4 = wx.CheckBox(id=wxID_COMPRASSALDOSAJUSTESCHECKBOX4,
              label='Credito', name='checkBox4', parent=self, pos=wx.Point(8,
              80), size=wx.Size(70, 13), style=0)
        self.checkBox4.SetValue(False)
        self.checkBox4.Bind(wx.EVT_CHECKBOX, self.OnCheckCredito,
              id=wxID_COMPRASSALDOSAJUSTESCHECKBOX4)

        self.staticText4 = wx.StaticText(id=wxID_COMPRASSALDOSAJUSTESSTATICTEXT4,
              label='Monto', name='staticText4', parent=self, pos=wx.Point(336,
              56), size=wx.Size(30, 13), style=0)

        self.textCtrl4 = wx.TextCtrl(id=wxID_COMPRASSALDOSAJUSTESTEXTCTRL4,
              name='textCtrl4', parent=self, pos=wx.Point(336, 72),
              size=wx.Size(100, 21), style=wx.TE_RIGHT | wx.TE_LEFT,
              value='0.00')

        self.staticText5 = wx.StaticText(id=wxID_COMPRASSALDOSAJUSTESSTATICTEXT5,
              label='Observaciones', name='staticText5', parent=self,
              pos=wx.Point(8, 104), size=wx.Size(71, 13), style=0)

        self.textCtrl5 = wx.TextCtrl(id=wxID_COMPRASSALDOSAJUSTESTEXTCTRL5,
              name='textCtrl5', parent=self, pos=wx.Point(8, 120),
              size=wx.Size(432, 21), style=0, value='')
        self.textCtrl5.Bind(wx.EVT_KILL_FOCUS, self.OnKillFocus)

        self.checkBox5 = wx.CheckBox(id=wxID_COMPRASSALDOSAJUSTESCHECKBOX5,
              label='Doc. Interno', name='checkBox5', parent=self,
              pos=wx.Point(8, 144), size=wx.Size(70, 13), style=0)
        self.checkBox5.SetValue(False)

        self.button1 = wx.Button(id=wxID_COMPRASSALDOSAJUSTESBUTTON1,
              label='Guardar', name='button1', parent=self, pos=wx.Point(256,
              160), size=wx.Size(75, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnGuardar,
              id=wxID_COMPRASSALDOSAJUSTESBUTTON1)

        self.button2 = wx.Button(id=wxID_COMPRASSALDOSAJUSTESBUTTON2,
              label='Salir', name='button2', parent=self, pos=wx.Point(366,
              160), size=wx.Size(75, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnSalir,
              id=wxID_COMPRASSALDOSAJUSTESBUTTON2)

    def __init__(self, parent, temporada, idproveedor, nombre):
        self._init_ctrls(parent)
        self.textCtrl1.SetLabel(temporada)
        self.textCtrl2.SetLabel(idproveedor)
        self.textCtrl3.SetLabel(nombre)
        self.checkBox1.SetFocus()

    def OnSalir(self, event):
        self.Close()
        
    def verificar(self):
        if self.checkBox1.GetValue()==self.checkBox2.GetValue():
            utiles.mensaje(None,"Debe indicar si Actualiza o NO el Servidor")
            return False
        if self.checkBox3.GetValue()==self.checkBox4.GetValue():
            utiles.mensaje(None,"Debe indicar si es un Debito (+) o Credito (-)")
            return False
        try:
            monto = Decimal(self.textCtrl4.GetLabel())
        except:
            utiles.mensaje(None,"Debe ingresar un monto")
            return False
        if monto<Decimal("0.00"):
            utiles.mensaje(None,"Monto debe ser positivo")
            return False
        return True

    def OnKillFocus(self, event):
        self.textCtrl5.SetLabel(self.textCtrl5.GetLabel().upper())
        
    def OnCheckDebito(self, event):
        if self.checkBox3.GetValue():
            self.checkBox4.SetValue(False)
        else:
            self.checkBox4.SetValue(True)

    def OnCheckCredito(self, event):
        if self.checkBox4.GetValue():
            self.checkBox3.SetValue(False)
        else:
            self.checkBox3.SetValue(True)

    def OnCheckEn1(self, event):
        if self.checkBox1.GetValue():
            self.checkBox2.SetValue(False)
        else:
            self.checkBox2.SetValue(True)
            
    def OnCheckEn2(self, event):
        if self.checkBox2.GetValue():
            self.checkBox1.SetValue(False)
        else:
            self.checkBox1.SetValue(True)            

    def OnGuardar(self, event):
        if not self.verificar(): return
        idoperacion = "AJUSTE"
        fecha = utiles.obtenerFecha("Y-m-d h:m:s")
        idproveedor = self.textCtrl2.GetLabel()
        #FactA 0 - FactC 1 - Rto1 2 - Rto2 3 - NtaCredito 4 - NtaDebito 5 - 
        #Otros2 6 - Otros1 7 - Pag1 8 - Pag2 9 - Credito2 10
        if self.checkBox3.GetValue(): #debito
            tipodoc = "7"
        else: #credito
            tipodoc = "6"
        if self.checkBox1.GetValue(): #en 1
            idforma1o2 = "1"
            monto1 = self.textCtrl4.GetLabel()
            monto2 = "0.00"
        else: #en 2
            idforma1o2 = "2"
            monto1 = "0.00"
            monto2 = self.textCtrl4.GetLabel()
        nrofactura = "varios"
        cantproductos = "0"
        observaciones = self.textCtrl5.GetLabel()
        operador = ""
        temporada = self.textCtrl1.GetLabel()
        idregistro = "-1"
        if self.checkBox5.GetValue():
            interno = "1"
        else:
            interno = "0"
        
        r1 = "INSERT INTO comprasaldos ("
        r2 = "idoperacion,fecha,idproveedor,"
        r3 = "monto1,monto2,tipodoc, "
        r4 = "nrofactura,cantproductos,idforma1o2, "
        r5 = "observaciones,operador,temporada, "
        r6 = "idregistro,interno) "
        r7 = "VALUES ("
        r8 = "'%s', '%s', '%s', " % (idoperacion, fecha, idproveedor)
        r9 = "'%s', '%s', '%s', " % (monto1, monto2, tipodoc)
        r0 = "'%s', '%s', '%s', " % (nrofactura, cantproductos, idforma1o2)
        rA = "'%s', '%s', '%s', " % (observaciones, operador, temporada)
        rB = "'%s', '%s')" % (idregistro, interno)
        sql = r1+r2+r3+r4+r5+r6+r7+r8+r9+r0+rA+rB
        consultasBD.executaSinCommit(None, sql)

        self.Close()
